﻿using B.S.DataBase.MyProject.Domain.Sales;
using B.S.DataBase.MyProject.ErrorCode;
using MediatR;
using System.ComponentModel.DataAnnotations;

namespace T.E.ERP.Write.API.Applicantions.Command.SalesCommand
{
    /// <summary>
    /// 修改发货通知单命令
    /// </summary>
    public class UpdateDeliveryNoticeCommand:IRequest<APIResult<int>>
    {
        /// <summary>
        /// 发货通知单编号
        /// </summary>
        public Guid NoticeId { get; set; }

        /// <summary>
        /// 单据编码
        /// </summary>
        public string? DocumentCode { get; set; }
        /// <summary>
        /// 单据日期
        /// </summary>
        public DateTime DocumentDate { get; set; }
        /// <summary>
        /// 外键，关联业务类型动态表（Business_Type）编码
        /// </summary>
        public int BusinessTypeId { get; set; }
        /// <summary>
        /// 外键，关联仓库动态表（Warehouse）编码
        /// </summary>
        public int WarehouseId { get; set; }

        /// <summary>
        /// 收货人
        /// </summary>
        public string? Consignee { get; set; }
        /// <summary>
        /// 操作员
        /// </summary>
        public string? Operator { get; set; }
        /// <summary>
        /// 客户名称
        /// </summary>
        public string? CustomerName { get; set; }
        /// <summary>
        /// 电话
        /// </summary>
        public string? Phone { get; set; }
        /// <summary>
        /// 单据状态
        /// </summary>
        public string? DocumentStatus { get; set; }
        /// <summary>
        /// 审核员
        /// </summary>
        public string? Auditor { get; set; }
        /// <summary>
        /// 审核日期
        /// </summary>
        public DateTime? AuditDate { get; set; }
        /// <summary>
        /// 交付日期
        /// </summary>
        public DateTime DeliveryDate { get; set; }

        /// <summary>
        /// 外键，关联业务状态动态表（Business_Status）编码 
        /// </summary>
        public int BusinessStatusId { get; set; }
        /// <summary>
        /// 运费（界面未显式标注，预留扩展）
        /// </summary>
        public string? FreightCost { get; set; }
        /// <summary>
        /// 装卸费（界面未显式标注，预留扩展）
        /// </summary>
        public string? HandlingFee { get; set; }
        /// <summary>
        /// 地址
        /// </summary>
        public string? Address { get; set; }
        /// <summary>
        /// 备注信息
        /// </summary>
        public string? Remark { get; set; }

        /// <summary>
        /// 订单物料
        /// </summary>
        public List<OrderMaterials> OrderMaterials { get; set; }
    }
}
